home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / inet / ien / ien-195 < prev    next >
Text File  |  1988-12-01  |  24KB  |  495 lines

  1.  
  2. Internet Experiment Note:  195
  3.  
  4.  
  5.          COMMENTS ON NBS TRANSPORT PROTOCOL PROPOSAL [1]
  6.  
  7.                         by Carl Sunshine
  8.                 University of Southern California
  9.                  Information Sciences Institute
  10.                            August 1981
  11.  
  12.  
  13.  
  14. 1 INTRODUCTION
  15.  
  16. 1a The U.S. National Bureau of Standards is sponsoring the
  17. development of protocols for several levels of computer network
  18. architecture.  Numerous documents have been produced, mostly by
  19. Bolt Beranek and Newman, as part of this program.  The purpose of
  20. this note is to comment on the recent proposal for a tranpsort
  21. protocol [1], concerning both the general specification
  22. methodology and the particular mechanisms suggested for this
  23. protocol.
  24.  
  25. 1b These comments stem from a moderately detailed reading of the
  26. NBS transport protocol [1] and specification methodology [2]
  27. documents, and a general familiarity with other work in the NBS
  28. program.  They necessarily focus on objections and problems
  29. rather than compliments, although lack of comment should not be
  30. taken as agreement since it has not been possible to completely
  31. review these documents.  My comments fall into four broad
  32. categories: service specification, protocol specification,
  33. architecture, and comparison with TCP.  The final section should
  34. be of special interest to readers who are familiar with U.S.
  35. Department of Defense protocol development efforts but not with
  36. the details of the NBS proposals.
  37.  
  38.  
  39. 2 SERVICE SPECIFICATION
  40.  
  41. 2a One of my first points must be that the service specification
  42. is very unsatisfactory.  I understand there was a decision to be
  43. less formal in this area than with the protocol itself, but I
  44. think that decision should be reconsidered.  In my view, there is
  45. no reason that the layer as a whole cannot be viewed as a
  46. "service machine" and services defined in essentially the same
  47. way as for the protocol. The recent work by SDC on DoD IP and TCP
  48. [3,4] provide strong support for this view.  An alternative
  49. approach based on sequencing expressions has been extensively
  50. developed by Schindler and applied to a variety of OSI protocols
  51. and services [5].
  52.  
  53. 2b Even if the informal "time line" figures and text now in use
  54. for service specifications are maintained, major deficiencies
  55. must be corrected.  The figures purport to show the relative
  56. timing of service primitives within a given service.  They do NOT
  57. show the relative timing allowed for interaction primitives of
  58.  
  59.  
  60. Sunshine                                                   Page 2
  61. IEN 195                                               August 1981
  62.  
  63.  
  64. different services (e.g. that T_DATA can only follow T_CONNECT).
  65. They do NOT show the relative timing allowed for multiple
  66. instances of the same service (e.g. several T_UNIT_DATA data
  67. requests may be made, and their corresponding indiciations may
  68. occur in a different order than the requests, but with normal
  69. T_DATA, the indications must be in the same order as the
  70. requests). They do NOT show that some services can be interrupted
  71. or completed by other services (e.g. T_CONNECT service primtives
  72. can be followed at various stages by T_DISCONNECT primitives, for
  73. example Connect.Req -> Connect.Ind -> Disconnect.Req ->
  74. Disconnect.Ind, which is not shown in any figure).
  75.  
  76. 2c There is no indication in the service primitives of how they
  77. are associated by the receiver with a particular connection. For
  78. example, the DATA primitives have only the data as a parameter.
  79. Apparently the connection ID is an implicit parameter of all
  80. service primitives.  This should be discussed explicitly.  For
  81. example, what happens when two users try to connect to each other
  82. at the same time (using the same transport addresses)?  Is this a
  83. simultaneous T_CONNECT situation which is not shown, or is it
  84. considered two different connections?  What if two remote
  85. entities issue T_CONNECT requests to the same third party
  86. transport address? Are multiple connections to the same address
  87. allowed?  When a T_UNIT_DATA confirmation is returned to the
  88. user, how is it to be associated with the proper initial request
  89. (there may be several to different destinations, or even to the
  90. same destination in progress)?
  91.  
  92. 2d There is no explicit statement that the parameter values of a
  93. request are related to those of the corresponding indication.
  94. Presumably they are to be copied, but is this always true?
  95.  
  96. 2e There are many questions about addressing and connection
  97. establishment. Some have been mentioned two paragraphs above.
  98. Another is that the T_CONNECT service definition specifies that a
  99. request will be followed by an indication to the remote address,
  100. but what if this address is invalid, or "no one is there"
  101. somehow, so the indication cannot be delivered (for example,
  102. there may be no process bound to the specified address on the
  103. remote system, and it may not operate to create processes on
  104. demand).  Will this result in a T_DISCONNECT from the remote
  105. entity (reason address unknown or unreachable)?
  106.  
  107. 2f Specifying the to and from parameters when the service as a
  108. whole is defined (e.g., page 28-29 for T_UNIT_DATA) seems
  109. redundant with the specification of all parameters for each
  110. service primitive (page 31), and is in fact misleading since it
  111. implies that every primitive will carry all of these parameters.
  112.  
  113. 2g There is no discussion or specification anywhere of flow
  114. control which is mentioned as one element of the service provided
  115. (page 15). In fact the event model used seems to allow an
  116. unlimited number of primitives to be requested by the user or
  117.  
  118.  
  119. Sunshine                                                   Page 3
  120. IEN 195                                               August 1981
  121.  
  122.  
  123. indicated by the entity.  There is no mention of any primitives
  124. explicitly intended to indicate cease/resume type flow control,
  125. or any limit on event queue sizes that could be checked by either
  126. party or block acceptance of primitives.  Again in Section 6.3
  127. describing an X.25 interface machine, the X.25 RR/RNR flow
  128. control packets are accepted, but have no specified effect on the
  129. using layer.  The machine apparently contains an unlimited size
  130. queue of data to be sent (snd_buf), there are no enablng
  131. conditions of a flow control nature on user data sending
  132. primitives, and no explicit flow control is passed from the X.25
  133. layer up to the user.
  134.  
  135. 2h The expedited data is specified to be "unsynchronized with
  136. respect to data in the normal flow," meaning (a) that the service
  137. does not tell the receiver where in the normal data stream the
  138. expedited data was generated, and (b) it may be delivered AFTER a
  139. subsequently sent normal data unit.  I think point b is highly
  140. undesirable, and point a is rather inconvenient since it forces
  141. users to put synchroniztion markers into the normal data stream.
  142. A more powerful service should be adopted in this area.
  143.  
  144. 2i The time figures seem to provide minimal information beyond
  145. the text, and in fact all correspond to a
  146. request-followed-by-indication model. They could be omitted
  147. entirely, or their size greatly reduced.  If they are retained,
  148. they should be placed in the document so they appear AFTER their
  149. citations in the text (many appear before).
  150.  
  151.  
  152. 3 PROTOCOL SPECIFICATION
  153.  
  154. 3a Most of the comments in this section apply to the extended
  155. class protocol found in Section 5.2 of the specification.
  156.  
  157. 3b Sequence numbers for normal data are discussed in Section
  158. 5.1.8, but sequence numbers for expedited data are never
  159. discussed.  Only in the section on header formats do we discover
  160. that this field is 7 bits.
  161.  
  162. 3c Section 5.1.12 states that the transport connection will be
  163. disconnected if the underlying net connection is closed
  164. "unexpectedly."  I would think it is an important service feature
  165. to protect users from network level difficulties, and to maintain
  166. the transport level connection, at least in the extended class,
  167. by opening another network connection if necessary.  Indeed, the
  168. main purpose of the transport layer is to mask network level
  169. errors and provide reliable service--giving up in this case seems
  170. exactly counter to this goal.
  171.  
  172. 3d The explanation of the difference between two-way and
  173. three-way connection establishment in Section 5.1.16 is nice.
  174.  
  175.  
  176. Sunshine                                                   Page 4
  177. IEN 195                                               August 1981
  178.  
  179.  
  180. 3e Section 5.1.17 essentially defines the default processing for
  181. all unspecified conditions to be disconnection.  It is important
  182. to make this notion more rigorous, and to discuss it when
  183. defining the basic machine model.  It should be extended to
  184. include processing of unspecified user requests as well as PDUs.
  185. That is, the model should be extended to include definition of an
  186. "else" transition that applies if no other transition is matched,
  187. with its precise actions given as for other transitions.  It is
  188. not clear that the desired action is always disconnection--simply
  189. ignoring or discarding certain inputs is often desired.
  190.  
  191. 3f The data types defined in Section 5.2.1 are never used later.
  192. For example, the type given for the "reason" field of the machine
  193. on page 48 is "int_type" rather than the "reason_type" defined on
  194. page 46.  The types actually used in the bulk of the
  195. specification (int, data, adr, and stat), on the other hand, are
  196. not defined formally anywhere.  The adr_type in particular seems
  197. to be a catch-all for several types of addresses (e.g. transport
  198. and network address fields are both specified as adr_type).
  199.  
  200. 3g Sections 5.2.3, 5.2.7, and 5.2.8 have similar information and
  201. purposes, and probably should appear together.  There are far too
  202. many items that are "primitives" and hence not defined formally.
  203. For example, only two out of perhaps 25 predicates are defined.
  204.  
  205. 3h The function of the "reference" numbers assigned to each side
  206. of a connection is never explanined clearly.  I am guessing that
  207. they are intended to function as a sort of incarnation number,
  208. and serve to prevent old packets between the same addresses from
  209. being confused with newer ones.  This is intended to allow
  210. connections to always start with sequence number zero, since they
  211. will have different reference numbers.  Hence reference numbers
  212. must not be reused too frequently, leading to the REF_WAIT state
  213. whenever a connection is closed, and the timeout discussed on
  214. page 66.  As noted, if a host crashes, it must not start ANY
  215. connections for the appropriate time period if it forgets the
  216. reference numbers used before the crash.  All of this should be
  217. clarified, with a few references to the relevant literature. The
  218. reference numbers also appear to serve an addressing function,
  219. being used (implicitly?--see next) to associate inputs with the
  220. correct state machine instance.
  221.  
  222. 3i There is a major omission concerning how to associate incoming
  223. packets and user commands with a particular connection.  Section
  224. 5.1.1 states that reference number pairs serve to identify
  225. connections, but this is not reflected in the formal spec in any
  226. way.  Technically, the interfaces should be extended to include
  227. these fields, and the enabling conditions should say
  228.         ([from N:PDU.dst_ref] = src_ref) for an arriving PDU, or
  229.         ([from U:Src_ref]=src_ref) for a user request, or
  230.         ([from S:Src_ref]=src_ref) for a timer indication
  231. Interestingly, the X.25 Interface machine in Section 6.3.3.3.3
  232. does include an explicit check of this type on the logical
  233.  
  234.  
  235. Sunshine                                                   Page 5
  236. IEN 195                                               August 1981
  237.  
  238.  
  239. channel. However, this will not work for initial connection
  240. requests where no machine has been esatblished yet--in this case,
  241. a new one must be created.  This is not modeled formally either.
  242.  
  243. 3j There are problems with events not associated with any
  244. specific connection.  For example, some timer requests are made
  245. before any reference numbers have been assigned, such as in
  246. transition 9, page 82.  How can the Current State item on page 82
  247. refer to "The transport connection" when there is no tranport
  248. level connection associated with this event yet (a specific
  249. transport address will only be identified when the CR PDU arrives
  250. as a subsequent event)?  How is the timeout specified in
  251. transition 11, page 84, associated with the correct protocol
  252. machine, particularly if more than one N_Connect indication has
  253. been received?  Similarly, how is the N_Accept indication in
  254. tranition 2, page 70, associated with the proper machine?
  255.  
  256. 3k Transitions 12 (p. 85) and 71-2 (pp. 183-6) are applicable to
  257. the state set "listening", but the first action (cancelling the
  258. timer) is only relevant in the CALLED state, not the CLOSED
  259. state.  I have not had the time to check all transitions in
  260. detail, but if this is indicative of sloppy treatment of state
  261. classes, there may be many other bugs of this sort.
  262.  
  263. 3l The 81 transitions are presented in a seemingly unstructured
  264. and haphazard fashion.  This makes it difficult to understand the
  265. protocol, and nearly impossible to check its completeness (has
  266. the possibility of every event in every state been considered?).
  267. With the default connection termination suggested in Section
  268. 5.1.17, technically every specification is complete, but the
  269. reader would have much greater confidence if the spec was
  270. presented systematically by types of events, or by states, and
  271. "error" inputs were explicitly listed, so a syntactic
  272. completeness check could be performed.
  273.  
  274. 3m It would be extremely helpful to provide some sort of index to
  275. the numerous transitions, perhaps a conventional state transition
  276. diagram with the transition numbers written on the arcs, or a
  277. listing of all the transition line specs (with no procedures)
  278. together.  This would allow the reader to trace interesting
  279. scenarios much more easily.
  280.  
  281. 3n The use of overlapping enabling conditions seems dangerous.
  282. For example, see pages 367 and 373 where an incoming DATA unit is
  283. received from X.25.  Combined with the lack of ordering of the
  284. transitions noted above, it is difficult for the reader (and the
  285. designer) to remember that implicit in transition 24 is the fact
  286. that packets with bad sequence numbers have been "filtered out"
  287. and handled in transition 18 (which has a higher priority).
  288. Perhaps these transitions should be combined, or else the
  289. enabling conditions expanded to be mutually exclusive so each
  290. stands complete on its own.  In the current format, it would be
  291. all too easy to modify the specification in one place, forgetting
  292.  
  293.  
  294. Sunshine                                                   Page 6
  295. IEN 195                                               August 1981
  296.  
  297.  
  298. that it has an effect on another transition that appears pages
  299. away.
  300.  
  301. 3o The syntax chosen for transitions, listing the new state first
  302. and the old state second seperated by a right-to-left arrow, is
  303. at odds with every other example of transition specifications I
  304. have seen. The conventional method is to write old -> new, left
  305. to right. The authors should at least highlight this difference
  306. and provide some justification for it in Section 3.3.3.
  307.  
  308. 3p When default values are passed for parameters, those
  309. parameters should not be specified explicitly (e.g. Subscript and
  310. Datum parameters at the end of transition two, page 70).  This
  311. will simplify the specification.  Otherwise, why define defaults?
  312.  
  313.  
  314. 4 ARCHITECTURE
  315.  
  316. 4a Both basic class and extended class protocols are designed to
  317. make use of a virtual circuit or connection oriented network
  318. level service.  This may make sense for basic class, but
  319. certainly does not for extended class.  Presumably, the reason
  320. for selecting extended class mode of operation would be in the
  321. situation where unreliable and/or datagram network service was
  322. being used.  In this case, the transport level goes through
  323. significant effort to manage network level "connection" setup and
  324. clearing, only to have the interface sublayer undo all of this
  325. work for a datagram system!  The design of extended class should
  326. clearly be optimized for operation over datagram nets.  This
  327. would allow substantial simplification of both the transport
  328. protocol (CALLED and CALLING states, and transitions 1-2, 9-11,
  329. 59-60, etc. would be eliminated) and the interface sublayer
  330. (essentially null for datagram nets).
  331.  
  332. 4b There seems to be little relation between basic class and
  333. extended class protocols. In particular, basic class is in no
  334. sense a "subset" of extended class so that an extended class
  335. implementation could also communicate with basic class by
  336. refraining from use of certain PDUs.  While there is some
  337. similarity in the interaction primitives of the two classes, it
  338. seems that these are essentially two different protocols.
  339. Acceptance of this fact would allow redesign of each protocol for
  340. greater efficiency.  In particular, the attempt to base extended
  341. class on connection oriented network service could be abandoned
  342. with great savings as discussed above.
  343.  
  344. 4c The wisdom of defining two classes of protocol at all is open
  345. to question. It clearly introduces the possibility of inability
  346. to communicate between different "class" users.  The extended
  347. class protocol is motivated by a view of underlying nets as not
  348. fully reliable, providing minimal services, a situation which
  349. clearly applies "in general."  Basic class is motivated by a view
  350. of highly reliable end-to-end connections available at the
  351.  
  352.  
  353. Sunshine                                                   Page 7
  354. IEN 195                                               August 1981
  355.  
  356.  
  357. network level.  Even if some public networks are expected to
  358. provide this service, the reality of user-to-user
  359. interconnections will in most cases also involve private or local
  360. networks, leading to serious questions about the validity of the
  361. situations for which basic class is optimized.
  362.  
  363. 4d Masking the datagram nature of the network level from the
  364. extended class tranport protocol leads to another inefficiency.
  365. The ARPA IP datagram protocol allows the user to supply a
  366. datagram "identifier" which is used to reassemble fragments at
  367. the destination.  If the transport level is aware of this
  368. feature, it can purposely use the same ID on retransmissions of
  369. the same packet, thereby increasing chances of correct reassembly
  370. at the destination (fragments of different retransmissions will
  371. be merged). When this feature is hidden from the transport level
  372. and the interface sublayer provides a new ID to each packet
  373. (including retransmissions) from the transport layer (as
  374. specified on p. 395), this is not possible.
  375.  
  376. 4e A difficulty in designing the interaction among layers is
  377. apparent in use of the datagram interaface sublayer defined in
  378. Section 6.4. When the "connection" is closed at one end
  379. (transactions 6,8,10 on pages 407,9,11), no network level
  380. disconnect is sent to the remote partner.  Hence the remote
  381. interface layer machine remains in the OPEN state indefinitely,
  382. even though the transport layer has closed its connection.
  383.  
  384.  
  385. 5 COMPARISON WITH TCP
  386.  
  387. 5a The NBS extended class tranport protocol bears some
  388. resemblance to the DoD TCP protocol.  Because there is some
  389. interest in the applicability of public standards to DoD, I will
  390. try to highlight some of the differences.
  391.  
  392. 5b The NBS protocol is designed to operate above connection
  393. oriented network services.  In DoD, datagram services
  394. predominate.  Hence the NBS protocol can be expected to be more
  395. costly and less efficient in this architecture as discussed
  396. above.  In addition to the extra states and transitions for
  397. network level connection management (see 4a above), the NBS
  398. protocol will be less robust since it drops transport connections
  399. when there are network problems (see 3c), and cannot support the
  400. merging of retransmissions by the IP (see 4d).
  401.  
  402. 5c The TCP uses carefully selected initial sequence numbers to
  403. prevent confusion of packets from different incarnations of
  404. connections. The NBS protocol uses reference numbers which also
  405. perform an addressing function in a fashion not fully explained
  406. (see 3h-3i).  The NBS protocol allows a less reliable two way
  407. handshake to establish connections in addition to the three way
  408. handshake used in TCP.
  409.  
  410.  
  411. Sunshine                                                   Page 8
  412. IEN 195                                               August 1981
  413.  
  414.  
  415. 5d The addressing features are not sufficiently well-defined in
  416. the NBS protocol to allow a clear comparison with TCP.
  417. Consistent with its use of underlying connection services, only
  418. the initial call request PDU includes transport addresses (format
  419. and semantics unspecified), while subsequent PDUs carry only the
  420. reference number or numbers (presumably--this is left
  421. unspecified), and no network level addresses.  In TCP all packets
  422. carry transport level ports (16 bits).  Certain ports are
  423. assigned to "well-known" applications with TCP, for which there
  424. seems no counterpart in the NBS protocol. The NBS protocol
  425. preserves the boundaries between sent transport service data
  426. units when they are delivered (i.e., provides record boundaries
  427. to users), while the latest version (August 1981) of the TCP is
  428. stream oriented and provides no record boundaries.  Instead the
  429. TCP provides a "Push" service feature to force the prompt
  430. delivery of all data sent up to that point.
  431.  
  432. 5e The unit of sequencing and flow control in TCP is 8-bit bytes,
  433. while in the NBS protocol it is protocol data units (PDUs) whose
  434. maximum size is defined at connection establishment.  This
  435. follows the stream oriented nature of TCP data transmission
  436. versus the record oriented aspect of the NBS protocol.  Sequence
  437. and acknowledgement numbers are 32 bits in TCP, and 15 bits in
  438. the NBS protocol.
  439.  
  440. 5f The NBS protocol maintains a minimum level of activity by
  441. sending Acks if necessary in either direction.  Periodic
  442. transmission, particularly when a zero window is opened, is only
  443. suggested in TCP.  Acks do not carry a sequence number in the NBS
  444. protocol, seemingly allowing them to be received and processed
  445. out of order more easily than with TCP. Acks can not be
  446. "piggybacked" on data packets in the NBS protocol, seemingly
  447. leading to more packets exchanged (see section 5.4.2 giving
  448. format of TPDUs).  Error packets have no sequence or
  449. acknowledgement numbers in the NBS protocol, seemingly allowing
  450. duplicates to be accepted.
  451.  
  452. 5g A single unit of "expedited data" may be transmitted at one
  453. time in the NBS protocol whose position and delay relative to the
  454. normal data units is unknown (see 2h above).  The latest TCP
  455. (August 1981) provides an "Urgent" service feature which
  456. indicates a point in the normal data stream at which "urgent" or
  457. priority data has been sent.  The urgent indication is presented
  458. to the receiver at least as soon as the urgent data.
  459.  
  460. 5h The features for terminating connections (both "graceful" and
  461. immediate disconnect) in the NBS protocol appear to duplicate
  462. those in TCP. The security, compartment, and  precedence features
  463. in the NBS protocol also seem to duplicate those in TCP although
  464. the fields are smaller and their semantics are left undefined.
  465.  
  466.  
  467. Sunshine                                                   Page 9
  468. IEN 195                                               August 1981
  469.  
  470.  
  471. REFERENCES
  472.  
  473. [1]  J. Burruss and others, Specification of the Transport
  474.      Protocol, Report No. ICST/HLNP-81-1, National Bureau of
  475.      Standards, February 1981.
  476.  
  477. [2]  R. Tenney and T. Blumer, An Automated Formal Specification
  478.      Technique for Protocols, Report No. 4581, Bolt Beranek and
  479.      Newman, February 1981.
  480.  
  481. [3]  G. A. Simon and M. M. Bernstein, DCEC Protocols
  482.      Standardization Program/ Protocol Specification Report,
  483.      TM-7038/204/00, System Development Corp., July 1981.  (Also
  484.      see DARPA Internet Experiment Note No. 186.)
  485.  
  486. [4]  M. M. Bernstein, DCEC Protocols Standardization Program/
  487.      Preliminary Transport Protocol Specification Report,
  488.      TM-7038/207/01, System Development Corp., August 1981.
  489.  
  490. [5]  S. Schindler, U. Flasche, and D. Altenkrueger, "The OSA
  491.      Project: Formal Specification of the ISO Transport Service,"
  492.      Proc. Computer Networking Symposium, National Bureau of
  493.      Standards, December 1980.
  494.  
  495.